package co.edu.udea.quejas.DAO.hibernate;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import co.edu.udea.quejas.DAO.ProductoDAO;
import co.edu.udea.quejas.DTO.Producto;
import co.edu.udea.quejas.exception.IWDaoException;

public class ProductoDAOHibernate extends HibernateDaoSupport implements ProductoDAO {

	@Override
	public Producto insertar(Producto producto) throws IWDaoException {
		Transaction tx=null;
		Session session=null;
		try{
			session= (Session) getSession();			
			tx= session.beginTransaction();
			session.save(producto);
			tx.commit();
			
			}catch(HibernateException e){
				throw new IWDaoException(e);
			}finally {
			session.close();
			
		}
		return producto;
	}

	@Override
	public List<Producto> obtener() throws IWDaoException {
		Session session =null;
		List<Producto> productos = new ArrayList<Producto>();
		try{
		session= (Session) getSession();
		
		Criteria criteria = session.createCriteria(Producto.class);
		productos = criteria.list();
		}catch(HibernateException e){
			throw new IWDaoException(e);
		}finally{
			
			session.close();
		}
		return productos;
	}

	@Override
	public Producto obtener(int idproducto) throws IWDaoException {
		Producto producto = null;
		Session session =null;
		try{
		session= (Session) getSession();
		producto= (Producto) session.get(Producto.class, idproducto);	
		
		}catch(HibernateException e){
			throw new IWDaoException(e);
		}finally{
			session.close();
		}
		return producto;

	}

}
